Hình thức song song Tính toán song song

Song song cấp bit

Bài chi tiết: Song song cấp bit

Từ sự ra đời của công nghệ chế tạo chip máy tính very-large-scale integration (VLSI) từ những năm 1970 cho đến năm 1986, tăng tốc trong kiến trúc máy tính được điều khiển bằng cách tăng gấp đôi kích cỡ từ máy tính—khối lượng thông tin bộ xử lý có thể thao tác trên một chu kỳ.[18] Tăng kích thước từ làm giảm số lượng chỉ lệnh các bộ xử lý phải thực thi để thực hiện một hoạt động trên các biến có kích cỡ lớn hơn độ dài của từ. Ví dụ, khi một bộ xử lý 8-bit phải tạo thêm 2 nguyên số 16-bit, trước tiên bộ xử lý phải thêm vào các bit bậc thấp hơn 8 từ mỗi số nguyên bằng cách sử dụng lệnh cộng tiêu chuẩn, sau đó thêm vào các bit bậc cao hơn 8 bằng cách sử dụng lệnh cộng có nhớ và bit nhớ lấy từ việc thêm vào bậc thấp; do đó, bộ xử lý 8-bit cần đến hai câu lệnh để hoàn thành một thao tác, trong khi bộ xử lý 16-bit có thể làm xong công việc này chỉ với một câu lệnh duy nhất.

Trong lịch sử, các vi xử lý 4-bit đã từng được thay thế bằng 8-bit, 16-bit, sau đó là 32-bit. Xu hướng này đã kết thúc với sự ra đời của bộ vi xử lý 32-bit, đã trở thành tiêu chuẩn cho các tính toán chung trong hai thập kỷ. Cho đến gần đây (khoảng 2003–2004), với sự ra đời của kiến trúc x86-64, bộ xử lý 64-bit đã trở nên phổ biến.

Song song cấp lệnh

Bài chi tiết: Song song cấp lệnh
Một đường liên kết 5 giai đoạn điển hình trong một máy RISC (IF = Nạp lệnh, ID = Giải mã lệnh, EX = thực thi, MEM = truy cập bộ nhớ, WB = Register write back)

Một chương trình máy tính, về bản chất là một loạt những câu lệnh được thực hiện bởi một bộ xử lý. Những câu lệnh này sẽ được sắp xếp lại và kết hợp thành các nhóm mà sau đó được thực hiện song song mà không thay đổi kết quả của chương trình. Đây được gọi là song song cấp câu lệnh. Những ưu điểm của song song cấp câu lệnh đã thống trị kiến trúc máy tính từ giữa những năm 1980 cho đến giữa thập niên 1990.[19]

Các bộ xử lý hiện đại có những đường liên kết câu lệnh đa công đoạn. Mỗi giai đoạn trong đường liên kết tương ứng với mỗi hành động khác nhau mà bộ xử lý thực hiện với câu lệnh trong giai đoạn đó; bộ xử lý với một đường liên kết N giai đoạn có thể có đến N câu lệnh ở những giai đoạn khác nhau. Ví dụ tiêu chuẩn của một bộ xử lý đường liên kết là bộ xử lý RISC, với 5 công đoạn: nạp lệnh, giải mã, thực thi, truy cập bộ nhớ, và write back. Bộ xử lý Pentium 4 có một đường liên kết 35 giai đoạn.[20]

Một bộ xử lý siêu vô hướng với liên kết 5 giai đoạn, có khả năng phát ra 2 câu lệnh một chu kỳ. Nó có thể có 2 câu lệnh trong mỗi giai đoạn của đường liên kết, với tổng số lên đến 10 câu lệnh (màu xanh lá cây) được thực hiện đồng thời.

Ngoài mô hình song song cấp câu lệnh từ đường liên kết, một số bộ xử lý cũng có thể tạo ra nhiều hơn một câu lệnh tại một thời điểm. Chúng được gọi là bộ xử lý siêu vô hướng. Các câu lệnh chỉ được nhóm lại với nhau khi giữa chúng không có phụ thuộc dữ liệu. Scoreboardingthuật toán Tomasulo (tương tự như scoreboarding nhưng sử dụng đổi tên thanh ghi) là hai trong số những kỹ thuật phổ biến nhất cho việc thực thi sai thứ tự và song song cấp câu lệnh.

Song song dữ liệu

Bài chi tiết: Song song dữ liệu

Song song dữ liệu là song song vốn có trong Vòng lặp chương trình, trong đó tập trung vào phân phối dữ liệu qua các nút tính toán khác nhau để được xử lý song song. "Vòng song song thường dẫn đến những chuỗi hoạt động tương tự (không nhất thiết phải giống nhau) hoặc các chức năng được thực hiện trên các yếu tố của một cấu trúc dữ liệu lớn."[21] Nhiều ứng dụng khoa học và kỹ thuật áp dụng song song dữ liệu.

Một phụ thuộc loop-carried là sự phụ thuộc của một vòng lặp đi lặp lại trên đầu ra của một hoặc nhiều lần lặp lại trước. Phụ thuộc loop-carried ngăn chặn sự song song hóa của các vòng. Ví dụ, xem xét giả mã sau khi tính một vài số Fibonacci đầu tiên:

1: PREV1:= 02: PREV2:= 14: do:5: CUR:= PREV1 + PREV26: PREV1:= PREV27: PREV2:= CUR8: while (CUR < 10)

Vòng này không thể song song vì CUR phụ thuộc vào chính nó (PREV2) và PREV1, được tính toán trong mỗi lần lặp vòng. Vì mỗi lần lặp phụ thuộc vào kết quả của lần lặp trước đó, nên chúng không thể song song. Khi vấn đề trở nên lớn hơn, khối lượng của dữ liệu song song luôn luôn tăng theo.[22]

Song song tác vụ

Bài chi tiết: Song song tác vụ

Song song tác vụ là thuộc tính của một chương trình song song mà "các phép tính hoàn toàn khác nhau có thể được thực hiện trên các bộ dữ liệu giống hoặc khác nhau".[21] This contrasts with data parallelism, where the same calculation is performed on the same or different sets of data. Task parallelism does not usually scale with the size of a problem.[22]

Tài liệu tham khảo

WikiPedia: Tính toán song song ftp://download.intel.com/museum/Moores_Law/Article... http://www.fourmilab.ch/babbage/sketch.html http://www.computerworld.com/action/article.do?com... http://www.future-fab.com/documents.asp?grID=353&d... http://www.ingentaconnect.com/content/klu/vlsi/199... http://ppppcourse.ning.com/ http://www.nytimes.com/2004/05/08/business/08chip.... http://www.pcmag.com/encyclopedia_term/0,,t=mpp&i=... http://www.pcmag.com/encyclopedia_term/0,2542,t=Be... http://www.springerlink.com/content/jjrdrb0lelyeu3...